package com.xxxx.server.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xxxx.server.mapper.MenuauthorityMapper;
import com.xxxx.server.pojo.Menuauthority;
import com.xxxx.server.pojo.RespBean;
import com.xxxx.server.service.IMenuauthorityService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;
import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author LT
 * @since 2022-02-27
 */
@Service
public class MenuauthorityServiceImpl extends ServiceImpl<MenuauthorityMapper, Menuauthority> implements IMenuauthorityService {

    @Autowired
    private MenuauthorityMapper menuauthorityMapper;

    /**
     * 更新权限对应菜单
     *
     * @param authorityId
     * @param menuId
     * @return
     */
    @Override
    @Transactional
    public RespBean updateMenuAuthority(Integer authorityId, List<Integer> menuId) {
        //一般情况是需要判断这个权限id是否有菜单id,先判断,然后执行相关操作,否则会产生错误,已经有的菜单再次添加会出错
        // 但是如果菜单很多,更新时需要比较很多次
//解决方法 传入的权限id,1.将权限id对应的菜单全部清空2.把菜单id和权限id对应起来,
        //大概就是先清空,再添加
        menuauthorityMapper.delete(new QueryWrapper<Menuauthority>()
                .eq("authorityId", authorityId));
        if(menuId==null||menuId.size()==0)
        {
            return  RespBean.success("更新成功");//传过来的菜单id为空或者长度为0说明啥也没干,直接提示成功
        }
        //如果传过来的菜单id有内容,正常进行更新,前面已经清空了,现在进行插入  即批量更新
        Integer returnResult = menuauthorityMapper.insertAllmenuId(authorityId, menuId);
        //更新条数和长度相同则成功
        if(returnResult==menuId.size()){
            return RespBean.success("更新成功!");
        }
        else{
            return RespBean.error("更新失败!");
        }

    }
}
